package morning.cat.study.jdk.serializable;

import java.io.Serializable;
import java.util.Date;

import morning.cat.study.Archive;

/**
 * 若类仅仅实现了Serializable接口： ObjectOutputStream 采用默认的序列化方式，对对象的非 transient
 * 的实例变量进行序列化。 ObjcetInputStream 采用默认的反序列化方式，对对象的非 transient 的实例变量进行反序列化。
 *
 * @author mengzhang6
 * @date 2018/10/22 8:57
 */
public class User implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -4341428955477330224L;
	private int id;
	private String name;
	private Date addDate;

	/**
	 * 使用transient表示，不参与序列化
	 */
	private transient String no;

	/**
	 * 声明为static和transient类型的成员数据不能被序列化 因为static代表类的状态，transient代表对象的临时数据。
	 */
	public static String staNo;

	/**
	 * Archive也需要实现Serializable
	 */
	private Archive archive;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getAddDate() {
		return addDate;
	}

	public void setAddDate(Date addDate) {
		this.addDate = addDate;
	}

	public String getNo() {
		return no;
	}

	public void setNo(String no) {
		this.no = no;
	}

	public Archive getArchive() {
		return archive;
	}

	public void setArchive(Archive archive) {
		this.archive = archive;
	}

	@Override
	public String toString() {
		return "User{" + "id=" + id + ", name='" + name + '\'' + ", addDate=" + addDate + ", no='" + no + '\''
				+ ", archive=" + archive + '}';
	}
}